One of the most important societal changes of recent times has been the emergence of information systems, more particularly, digital computer systems, for managing and accessing information, entertainment, etc. Digital information systems (e.g., the Internet) have emerged as a predominant communications medium. Digital information systems enable the navigable aggregation of information, for example Web page content, among all the connected devices. A fundamental component of virtually all digital information systems is the software based applications which provide their functionality. Software applications general refers to software based components, programs, products, and the like which when executed by a digital computer system device (e.g., desktop computer system, handheld computer system, cellphone, etc.) implement the device functionality for the user.
Software applications are typically developed by teams specialists (e.g., programmers, software engineers, etc.). Programmers, or software application authors, typically use specialized software to design and build a software application. For example, a set of specialized software applications (e.g., a software development toolkit, or “SDK”) can be used to help programmers write an application. For building software application graphical interfaces, the SDK provides the tools and libraries for creating menus, dialog boxes, fonts and icons. The SDK provides the means to link the application to libraries of software routines and to link it with the operating environment (OS, DBMS, protocol, etc.). A typical SDK can also include a programming language and related components. It can include the compiler, text editor, debugger, function library and any other supporting programs that enable a programmer to write a program. SDKs are generally designed to make the process of designing and building software applications more efficient.
A well-known problem exists however due to the fact that, despite the use of SDKs, complex software applications can take many months, or even years, to complete. A complex software applications can involve large teams of software engineers working cooperatively on various parts of the application simultaneously. Accordingly, keeping track of such a large project such as a development of a complex software application is extremely critical task. Many large software projects have ultimately failed due to lack of configuration management.
As known by those skilled in the art, configuration management with respect to software development refers to a systematic method and mechanism for keeping track of large projects. Although prior art “version control” schemes, which maintain a database of revisions, is part of such a system, a full-blown software configuration management system (SCM system or CM system) must at minimum automatically document all components used to build the various executable program building blocks of a project. Prior art software configuration management systems are typically able to recreate each “build” as well as to recreate earlier builds in order to maintain previous versions of a product. Prior art software configuration management systems may also be used to prevent unauthorized access to files or to alert the appropriate users when a file has been altered.
Prior art software configuration management systems have a number problems. A typical SCM system is separate from the software development process. For example, engineers must go through elaborate procedures in order to “checkout” software from a central repository in order to make updates or changes during a design and development process. These same procedures typically also apply during a quality assurance process as the software is carefully tested and prepared for release. Prior art SCM systems also utilize inefficient mechanisms for accessing previous versions of a software product. Usually, only the most recent releases are available to the development/quality assurance engineers. Where access is allowed to multiple previous versions, there often exists problems in keeping track of the different versions of the software product. Additionally, the check-in/check-out mechanisms of many prior art SCM systems increase the amount of time required, for example, for software product debugging between various versions.
Thus, what is required is a way to simplify the process of maintaining a software product version tracking system. What is required is a solution that renders the software configuration management process much easier than the prior art. What is required is a solution that simplifies the changing and maintaining of different software product versions within a software development/software quality assurance environment. The present invention provides a novel solution to these requirements.